﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Collections;
using System.Windows.Media;

using Civilisation_code.PJoueur;
using Civilisation_code.PCarte;
using Civilisation_code.PInterfaces_Fabrique_Unite;
using Civilisation_code.PPartie;
using Civilisation_code.PRessource;
using Civilisation_code.Implementation_Unite_EII;
using Civilisation_code.Implementation_Unite_INFO;

namespace Tests
{
    [TestClass]
    public class TestConstructionPartie
    {
        [TestMethod]
        public void TestInstantiation1()
        {
            //Premier test : instantiation petite carte 4 joueurs
            Monteur_Partie monteur = new Monteur_Partie_IMPL();

            Hashtable joueurs = new Hashtable();
            joueurs.Add("Flo", new Tuple<string, Color>("INFO", Colors.Blue));
            joueurs.Add("Nico", new Tuple<string, Color>("EII", Colors.Red));
            joueurs.Add("Robert", new Tuple<string, Color>("EII", Colors.Beige));
            joueurs.Add("Ivan", new Tuple<string, Color>("INFO", Colors.Black));

            monteur.genererPartie(joueurs, false);

            Assert.IsNotNull(monteur._partie);

            Assert.IsNotNull(monteur._partie._carte);
            Assert.IsNotNull(monteur._partie._carte._cases);
            Assert.AreEqual(625, monteur._partie._carte._cases.Count);

            Assert.IsNotNull(monteur._partie._joueurs);
            Assert.AreEqual(4,monteur._partie._joueurs.Count);


        }

        [TestMethod]
        public void TestInstantiation2()
        {
            //Premier test : instantiation grande carte
            Monteur_Partie monteur = new Monteur_Partie_IMPL();

            Hashtable joueurs = new Hashtable();
            joueurs.Add("Flo", new Tuple<string, Color>("INFO", Colors.Blue));
            joueurs.Add("Nico", new Tuple<string, Color>("INFO", Colors.Red));

            monteur.genererPartie(joueurs, true);

            Assert.IsNotNull(monteur._partie);

            Assert.IsNotNull(monteur._partie._carte);
            Assert.IsNotNull(monteur._partie._carte._cases);
            Assert.AreEqual(10000, monteur._partie._carte._cases.Count);

            Assert.IsNotNull(monteur._partie._joueurs);
            Assert.AreEqual(2, monteur._partie._joueurs.Count);


        }
    }
}
